package facilius.controller.action.nota;

import facilius.model.ServiceLocator;
import facilius.model.pojo.Turma;
import facilius.model.pojo.UsuarioCursoTurma;
import facilius.model.pojo.ValorNota;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.mentawai.core.BaseAction;

/**
 *
 * @author Graciano
 */
public class NotaReadAction extends BaseAction {

    @Override
    public String execute() throws Exception {
        String consequence = ERROR;
        try {
            Long turmaId = input.getLong("disciplinaId");

            Map<String, Object> criteria = new HashMap<String, Object>();
            criteria.put("professor",session.getAttribute("userId"));

            List<Turma> turmas = new ArrayList<Turma>();

            if (turmaId != null && turmaId > 0){
                turmas.add(ServiceLocator.getTurmaService().readById(turmaId));
            }else{
                turmas = ServiceLocator.getTurmaService().readByCriteria(criteria);
            }

            output.setValue("pojos", turmas);
            output.setValue("disciplinaOptions", ServiceLocator.getTurmaService().getOptions(criteria));

            for (int i = 0; i < turmas.size(); i++) {
                Turma t = turmas.get(i);
                Map<String, Object> criteriaTurma = new HashMap<String, Object>();
                criteriaTurma.put("turma", t);
                List<UsuarioCursoTurma> usuarios = ServiceLocator.getUsuarioCursoTurmaService().readByCriteria(criteriaTurma);
                output.setValue("usuarios" + t.getId(), usuarios);

                for (int j = 0; j < usuarios.size(); j++) {
                    UsuarioCursoTurma usuario = usuarios.get(j);
                    Map<String, Object> criteriaNota = new HashMap<String, Object>();
                    criteriaNota.put("usuarioCursoTurma", usuario);
                    criteriaNota.put("turma", t);
                    List<ValorNota> valores = ServiceLocator.getValorNotaservice().readByCriteria(criteriaNota);
                    output.setValue("notas" + usuario.getId(), valores);

                }


            }
            
            output.setValue("cont", java.lang.System.currentTimeMillis());
            consequence = SUCCESS;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return consequence;
    }
}
